/* 
    扫描类 
*/

export default class Scanner {
  constructor(templateStr) {
    // 指针
    this.pos = 0;
    this.templateStr = templateStr;
    this.tail = templateStr;
  }
  // 功能弱，作用用于走过指定内容，没有返回值
  scan(tag) {
    if (this.tail.indexOf(tag) == 0) {
      this.pos += tag.length;
      this.tail = this.templateStr.substring(this.pos);
    }
  }
  // 让指针进行扫描，直达遇到指定内容再停下，并返回指定内容之前的文字
  scanUntil(stopTag) {
    // 记录执行扫描开始时的指针位置
    const pos_backup = this.pos;
    // 当执行到指定的字符串时，停止扫描
    while (this.tail.indexOf(stopTag) != 0 && !this.eos()) {
      this.pos++;
      this.tail = this.templateStr.substring(this.pos);
    }
    return this.templateStr.substring(pos_backup, this.pos);
  }
  eos(){
      return this.pos >= this.templateStr.length
  }
}
